{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Multi-Layer Perceptron, MNIST\n",
    "---\n",
    "In this notebook, we will train an MLP to classify images from the [MNIST database](http://yann.lecun.com/exdb/mnist/) hand-written digit database.\n",
    "\n",
    "The process will be broken down into the following steps:\n",
    ">1. Load and visualize the data\n",
    "2. Define a neural network\n",
    "3. Train the model\n",
    "4. Evaluate the performance of our trained model on a test dataset!\n",
    "\n",
    "Before we begin, we have to import the necessary libraries for working with data and PyTorch."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# import libraries\n",
    "import torch\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "## Load and Visualize the [Data](http://pytorch.org/docs/stable/torchvision/datasets.html)\n",
    "\n",
    "Downloading may take a few moments, and you should see your progress as the data is loading. You may also choose to change the `batch_size` if you want to load more data at a time.\n",
    "\n",
    "This cell will create DataLoaders for each of our datasets."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# The MNIST datasets are hosted on yann.lecun.com that has moved under CloudFlare protection\n",
    "# Run this script to enable the datasets download\n",
    "# Reference: https://github.com/pytorch/vision/issues/1938\n",
    "\n",
    "from six.moves import urllib\n",
    "opener = urllib.request.build_opener()\n",
    "opener.addheaders = [('User-agent', 'Mozilla/5.0')]\n",
    "urllib.request.install_opener(opener)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "from torchvision import datasets\n",
    "import torchvision.transforms as transforms\n",
    "from torch.utils.data.sampler import SubsetRandomSampler\n",
    "\n",
    "# number of subprocesses to use for data loading\n",
    "num_workers = 0\n",
    "# how many samples per batch to load\n",
    "batch_size = 20\n",
    "# percentage of training set to use as validation\n",
    "valid_size = 0.2\n",
    "\n",
    "# convert data to torch.FloatTensor\n",
    "transform = transforms.ToTensor()\n",
    "\n",
    "# choose the training and test datasets\n",
    "train_data = datasets.MNIST(root='data', train=True,\n",
    "                                   download=True, transform=transform)\n",
    "test_data = datasets.MNIST(root='data', train=False,\n",
    "                                  download=True, transform=transform)\n",
    "\n",
    "# obtain training indices that will be used for validation\n",
    "num_train = len(train_data)\n",
    "indices = list(range(num_train))\n",
    "np.random.shuffle(indices)\n",
    "split = int(np.floor(valid_size * num_train))\n",
    "train_idx, valid_idx = indices[split:], indices[:split]\n",
    "\n",
    "# define samplers for obtaining training and validation batches\n",
    "train_sampler = SubsetRandomSampler(train_idx)\n",
    "valid_sampler = SubsetRandomSampler(valid_idx)\n",
    "\n",
    "# prepare data loaders\n",
    "train_loader = torch.utils.data.DataLoader(train_data, batch_size=batch_size,\n",
    "    sampler=train_sampler, num_workers=num_workers)\n",
    "valid_loader = torch.utils.data.DataLoader(train_data, batch_size=batch_size, \n",
    "    sampler=valid_sampler, num_workers=num_workers)\n",
    "test_loader = torch.utils.data.DataLoader(test_data, batch_size=batch_size, \n",
    "    num_workers=num_workers)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Visualize a Batch of Training Data\n",
    "\n",
    "The first step in a classification task is to take a look at the data, make sure it is loaded in correctly, then make any initial observations about patterns in that data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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kztH99VXX1W1YsWKRXyee03Vq1cvVXv99dcT1B3+dtlll0WszZkzR+W///57sttRs+Efe+wxVXOvhXfu3Jn0XpBY7u+RiIgULVo0puf556TDcYauj2/qAgAAAAAAAECIsKkLAAAAAAAAACES2vELzZs3V7k7cmH79u2qNn78eBtPmDBB1SZPnhzxGNWqVVN569atbezfovjQQw/Z+PHHH1c1xi8A4XXMMceoPNot96eccoqNb7zxRlXzbzM855xzIr6OeyvzwIEDY+oTydG0aVOVu3/+e/fuVbXPPvvMxv7t0EuXLrXxkiVLEtmiVaFCBRu7a1FEpGfPnjb+97//rWo9evSw8fvvv69q+/btS2SLh7WGDRvaeMyYMap2+eWXR3zem2++aWN/jIE7psW/flm+fHnMvVWuXNnG/ogN9z3Ov92+b9++Nn7qqadUjZELieHeJnjssceq2m233WbjcuXKqVqHDh1s3LFjR1WLd2yCP34hXm6vpUuXVjXGLySe/+fWsmVLG+fKpb+/M3bsWBv7n5eicW9xfu2111TNHe8jIvL111/b+D//+Y+qTZ061cbdunVTNXf8gjvyToTxC+nmnif86+BTTz3Vxtdff72qjRw50sa//PKLqvnvDe75rnjx4jH39u2339p40KBBMT8P4eCP3mjRooXK3esrd7yQL95xM0itvHnz2tjdXxMRqV+/fkyvsWXLloT2FAZ8UxcAAAAAAAAAQoRNXQAAAAAAAAAIETZ1AQAAAAAAACBEQjtT15+tVKBAARtPmzZN1dx5ddkxZ84clbtzEM8880xVO++882zsz69COJxwwgkqnz59uo1z584d9bmJmkOH5PFnFZYoUcLG9957r6q57yf+zC9/1nYyuPOjxo0bp2offPCBjbdt26Zq7hzXNWvWqNr69esT2WKO4c9Id+fozp49W9VmzJiRkp4icc9R/txed47l4sWLVe2iiy6ycalSpVTNn4GHyDZv3mxjdwa/iMill15q4yFDhqiaO2/7qKOOUrWHH3444mu+/PLLNvbfJ26//XaVN2rUyMb+fLqff/7Zxv7c3GjzfpF499xzj8pPO+00G9eoUSPm14l3pq4/79b9M/eve/Pnzx/xddz3EXeGqohe//68VcTHvWYR0X/fly1bpmqvv/56XMdw/6z8GbqrVq1SeZ06dWz822+/xXU8pJc7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I/iQGP65wB2xc9RRR0V83ldffaXyZIxc8McC5c+fP6bnfffddwnvBbErU6aMyt2xlvE666yzVH7hhReqfPbs2TaeNGnSIR8PsXNHJ/ijBOvWrWvj9evXq5p7jZAM7shUEZEbbrgh4mP93kaNGmXjeMc/pAPf1AUAAAAAAACAEGFTFwAAAAAAAABChE1dAAAAAAAAAAiRlMzU9efbVKxYMeJj3Xk+jRo1UrVPPvnkkHv55ZdfouYvv/yyje++++6Ir3PKKaeofOLEiTauUqXKobSIFCpSpIiN77vvPlXr1q2bjaPNgRbRcwf9WZquJ554QuXt27ePqU8k3mOPPWbjM888U9V27dplY3+ecrQ5ushZjj/+eJXv3LnTxomaMefPEnPfly655BJVy5cvn439eYTu8z7//POE9Ib0cmce9u3bV9Vuu+02lWdlRb7cW7BggY1fffVVVXvkkUcOpUXkUKeeemrE2po1a1LYSc5UrVq1iLUvv/wy6cd/5513bPzDDz+omjtjeceOHaq2devW5DYGxb++jTZHNxXcWczXXnutqh177LExvcbDDz+c0J7wv/x5pXfccYeNu3btqmru5+xosvP7S76nn37axryHpI//GzTvvvtumjoRadKkicqj7T36v8UV1t/G4pu6AAAAAAAAABAibOoCAAAAAAAAQIikZPxCnTp1VP7ee+/ZuHLlyqpWtGhRG/fs2VPV/vOf/9j466+/TmSL1hdffBHX8ypUqGDjZs2aqdprr712SD0heUaMGGFj/6v6uXL9828e+/btU7XVq1erfNSoUTEd7+OPP1Z5hw4dDng8JN7VV1+t8uuuuy7iYz/88EMbZ9q4BfcWpTx58qia+37qv0f6axiH7qSTTlJ54cKFbfzss8+qWrTbkNy/+7feequqlStXTuX58+ePqbdOnTqp/PXXX4/pechc/vWSu8bOPffcmF9n6NChKn/llVdszGgOJIJ/e66rWLFiKewkZ3LH1fnn/mnTptn4yiuvVLVEjcZwb3X1z1mXXnqpjQsWLKhq/jgGJN4zzzxj49atW8f8PHdNZed5JUqUsPFll12majVr1lR5dl7XNXr0aBvPnDkzrtdA7AYNGqTy22+/3cb+52P3z2b69Omq1rhxYxuff/75qnbiiSfG3I87LnPRokWqNn/+/JhfB4ePunXrpruFlGMXCQAAAAAA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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f4ec3d2b080>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "    \n",
    "# obtain one batch of training images\n",
    "dataiter = iter(train_loader)\n",
    "images, labels = dataiter.next()\n",
    "images = images.numpy()\n",
    "\n",
    "# plot the images in the batch, along with the corresponding labels\n",
    "fig = plt.figure(figsize=(25, 4))\n",
    "for idx in np.arange(20):\n",
    "    ax = fig.add_subplot(2, 20/2, idx+1, xticks=[], yticks=[])\n",
    "    ax.imshow(np.squeeze(images[idx]), cmap='gray')\n",
    "    # print out the correct label for each image\n",
    "    # .item() gets the value contained in a Tensor\n",
    "    ax.set_title(str(labels[idx].item()))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### View an Image in More Detail"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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iEj3F8D/C8tdE0tERERE1BMOsURERESkHQ6xRERERKQdDrFEREREpB0OsURERESkHQ6xRERERKQdDrFEREREpJ2Int9CRETU1e7du5W17777bmVtgD/LlWgw4CexRERERKQdDrFEREREpB0OsURERESkHQ6xRERERKQdDrFEREREpB0OsURERESkHUsOsS6XC263G3V1dSgqKtKmrbqva1t1n+3Q93Vtq+73pb19+3akpKQgOTkZq1at6vL64cOHkZubi3HjxiEnJwc+n898rbi4GBkZGcjIyMCLL77Ybb+iogKpqalwOp0oLS3ttu9yuTB+/HjMmDGj235aWhqWLVsGEQk6du/evbj11ltxyy23oKysrEv76aefxu23347bb78dCxYswA033AAAaG5uxpIlS3D77bdj0aJF2LZtW5dj//M//xOvvvoqtm/fjkWLFnV5/eqrr8bGjRvx/vvvY+bMmUGvRUdHY82aNXj55Zexbds2xMTEdLs353OxnosD2Vbd17Wtuq9rGyISsgcA6ekRFhYmXq9XEhMTJTIyUmpqasTpdPZ43EC3dV4792VwtXVe+8W4L4FAQE6dOiUOh0MOHjwobW1tkp6eLgcOHJBAIGA+5syZI2vXrpVAICA7duyQ+fPnSyAQkPLycpk+fbp0dHTIp59+KhMmTJCPP/7YPM4wDGlvbxeHwyFut1tOnDghaWlpUlNTI4ZhmI/Zs2fLmjVrxDAMqaiokHnz5olhGLJ7926ZMmWKtLe3S3t7u0yaNEkqKyvFMAyprKyU7du3S3R0tPzhD3+QV199VRwOh6xZs0YqKyu7fdx5553icrmksrJSXn31VXnllVeksrJStm7dKiNHjpT169dLZWWljB07VlJSUuTw4cMyY8YMSUtLk9raWrnuuutk7Nix5iMnJ0dmzZolW7ZskXvuuSfotT179sjChQtl7NixMn78eLnqqqvM13guWq+t89q5L/3f7s1cablPYjMzM+H1etHQ0IDOzk6UlZUhPz/f8m3VfV3bqvtsh76va1t1vy/tt99+G6NHj4bD4UBUVBQKCwuxdevWoPfU1tYiJycHAJCdnW2+Xltbi2nTpiEiIgKXXHIJ0tPTUVFREXTs3r17u/TP/dTzX/tZWVnm6zabDR0dHTAMA6dOnUJnZydGjBhhHufxeBATE4Po6GhERkYiKysLb731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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f4e69062860>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "img = np.squeeze(images[1])\n",
    "\n",
    "fig = plt.figure(figsize = (12,12)) \n",
    "ax = fig.add_subplot(111)\n",
    "ax.imshow(img, cmap='gray')\n",
    "width, height = img.shape\n",
    "thresh = img.max()/2.5\n",
    "for x in range(width):\n",
    "    for y in range(height):\n",
    "        val = round(img[x][y],2) if img[x][y] !=0 else 0\n",
    "        ax.annotate(str(val), xy=(y,x),\n",
    "                    horizontalalignment='center',\n",
    "                    verticalalignment='center',\n",
    "                    color='white' if img[x][y]<thresh else 'black')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "## Define the Network [Architecture](http://pytorch.org/docs/stable/nn.html)\n",
    "\n",
    "The architecture will be responsible for seeing as input a 784-dim Tensor of pixel values for each image, and producing a Tensor of length 10 (our number of classes) that indicates the class scores for an input image. This particular example uses two hidden layers and dropout to avoid overfitting."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Net(\n",
      "  (fc1): Linear(in_features=784, out_features=512, bias=True)\n",
      "  (fc2): Linear(in_features=512, out_features=512, bias=True)\n",
      "  (fc3): Linear(in_features=512, out_features=10, bias=True)\n",
      "  (dropout): Dropout(p=0.2)\n",
      ")\n"
     ]
    }
   ],
   "source": [
    "import torch.nn as nn\n",
    "import torch.nn.functional as F\n",
    "\n",
    "# define the NN architecture\n",
    "class Net(nn.Module):\n",
    "    def __init__(self):\n",
    "        super(Net, self).__init__()\n",
    "        # number of hidden nodes in each layer (512)\n",
    "        hidden_1 = 512\n",
    "        hidden_2 = 512\n",
    "        # linear layer (784 -> hidden_1)\n",
    "        self.fc1 = nn.Linear(28 * 28, hidden_1)\n",
    "        # linear layer (n_hidden -> hidden_2)\n",
    "        self.fc2 = nn.Linear(hidden_1, hidden_2)\n",
    "        # linear layer (n_hidden -> 10)\n",
    "        self.fc3 = nn.Linear(hidden_2, 10)\n",
    "        # dropout layer (p=0.2)\n",
    "        # dropout prevents overfitting of data\n",
    "        self.dropout = nn.Dropout(0.2)\n",
    "\n",
    "    def forward(self, x):\n",
    "        # flatten image input\n",
    "        x = x.view(-1, 28 * 28)\n",
    "        # add hidden layer, with relu activation function\n",
    "        x = F.relu(self.fc1(x))\n",
    "        # add dropout layer\n",
    "        x = self.dropout(x)\n",
    "        # add hidden layer, with relu activation function\n",
    "        x = F.relu(self.fc2(x))\n",
    "        # add dropout layer\n",
    "        x = self.dropout(x)\n",
    "        # add output layer\n",
    "        x = self.fc3(x)\n",
    "        return x\n",
    "\n",
    "# initialize the NN\n",
    "model = Net()\n",
    "print(model)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###  Specify [Loss Function](http://pytorch.org/docs/stable/nn.html#loss-functions) and [Optimizer](http://pytorch.org/docs/stable/optim.html)\n",
    "\n",
    "It's recommended that you use cross-entropy loss for classification. If you look at the documentation (linked above), you can see that PyTorch's cross entropy function applies a softmax funtion to the output layer *and* then calculates the log loss."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "# specify loss function (categorical cross-entropy)\n",
    "criterion = nn.CrossEntropyLoss()\n",
    "\n",
    "# specify optimizer (stochastic gradient descent) and learning rate = 0.01\n",
    "optimizer = torch.optim.SGD(model.parameters(), lr=0.01)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "## Train the Network\n",
    "\n",
    "The steps for training/learning from a batch of data are described in the comments below:\n",
    "1. Clear the gradients of all optimized variables\n",
    "2. Forward pass: compute predicted outputs by passing inputs to the model\n",
    "3. Calculate the loss\n",
    "4. Backward pass: compute gradient of the loss with respect to model parameters\n",
    "5. Perform a single optimization step (parameter update)\n",
    "6. Update average training loss\n",
    "\n",
    "The following loop trains for 50 epochs; take a look at how the values for the training loss decrease over time. We want it to decrease while also avoiding overfitting the training data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch: 1 \tTraining Loss: 0.753320 \tValidation Loss: 0.077026\n",
      "Validation loss decreased (inf --> 0.077026).  Saving model ...\n",
      "Epoch: 2 \tTraining Loss: 0.282486 \tValidation Loss: 0.059425\n",
      "Validation loss decreased (0.077026 --> 0.059425).  Saving model ...\n",
      "Epoch: 3 \tTraining Loss: 0.223825 \tValidation Loss: 0.048755\n",
      "Validation loss decreased (0.059425 --> 0.048755).  Saving model ...\n",
      "Epoch: 4 \tTraining Loss: 0.185427 \tValidation Loss: 0.041923\n",
      "Validation loss decreased (0.048755 --> 0.041923).  Saving model ...\n",
      "Epoch: 5 \tTraining Loss: 0.156857 \tValidation Loss: 0.035730\n",
      "Validation loss decreased (0.041923 --> 0.035730).  Saving model ...\n",
      "Epoch: 6 \tTraining Loss: 0.136490 \tValidation Loss: 0.032479\n",
      "Validation loss decreased (0.035730 --> 0.032479).  Saving model ...\n",
      "Epoch: 7 \tTraining Loss: 0.121144 \tValidation Loss: 0.029644\n",
      "Validation loss decreased (0.032479 --> 0.029644).  Saving model ...\n",
      "Epoch: 8 \tTraining Loss: 0.109397 \tValidation Loss: 0.026791\n",
      "Validation loss decreased (0.029644 --> 0.026791).  Saving model ...\n",
      "Epoch: 9 \tTraining Loss: 0.096450 \tValidation Loss: 0.024795\n",
      "Validation loss decreased (0.026791 --> 0.024795).  Saving model ...\n",
      "Epoch: 10 \tTraining Loss: 0.088351 \tValidation Loss: 0.023519\n",
      "Validation loss decreased (0.024795 --> 0.023519).  Saving model ...\n",
      "Epoch: 11 \tTraining Loss: 0.081291 \tValidation Loss: 0.021757\n",
      "Validation loss decreased (0.023519 --> 0.021757).  Saving model ...\n",
      "Epoch: 12 \tTraining Loss: 0.074204 \tValidation Loss: 0.020861\n",
      "Validation loss decreased (0.021757 --> 0.020861).  Saving model ...\n",
      "Epoch: 13 \tTraining Loss: 0.068794 \tValidation Loss: 0.019857\n",
      "Validation loss decreased (0.020861 --> 0.019857).  Saving model ...\n",
      "Epoch: 14 \tTraining Loss: 0.063714 \tValidation Loss: 0.018954\n",
      "Validation loss decreased (0.019857 --> 0.018954).  Saving model ...\n",
      "Epoch: 15 \tTraining Loss: 0.059194 \tValidation Loss: 0.018568\n",
      "Validation loss decreased (0.018954 --> 0.018568).  Saving model ...\n",
      "Epoch: 16 \tTraining Loss: 0.054714 \tValidation Loss: 0.017971\n",
      "Validation loss decreased (0.018568 --> 0.017971).  Saving model ...\n",
      "Epoch: 17 \tTraining Loss: 0.051826 \tValidation Loss: 0.018306\n",
      "Epoch: 18 \tTraining Loss: 0.049240 \tValidation Loss: 0.017168\n",
      "Validation loss decreased (0.017971 --> 0.017168).  Saving model ...\n",
      "Epoch: 19 \tTraining Loss: 0.046033 \tValidation Loss: 0.016182\n",
      "Validation loss decreased (0.017168 --> 0.016182).  Saving model ...\n",
      "Epoch: 20 \tTraining Loss: 0.043122 \tValidation Loss: 0.015927\n",
      "Validation loss decreased (0.016182 --> 0.015927).  Saving model ...\n",
      "Epoch: 21 \tTraining Loss: 0.040785 \tValidation Loss: 0.015801\n",
      "Validation loss decreased (0.015927 --> 0.015801).  Saving model ...\n",
      "Epoch: 22 \tTraining Loss: 0.037982 \tValidation Loss: 0.015498\n",
      "Validation loss decreased (0.015801 --> 0.015498).  Saving model ...\n",
      "Epoch: 23 \tTraining Loss: 0.036405 \tValidation Loss: 0.015437\n",
      "Validation loss decreased (0.015498 --> 0.015437).  Saving model ...\n",
      "Epoch: 24 \tTraining Loss: 0.033292 \tValidation Loss: 0.015217\n",
      "Validation loss decreased (0.015437 --> 0.015217).  Saving model ...\n",
      "Epoch: 25 \tTraining Loss: 0.032025 \tValidation Loss: 0.014667\n",
      "Validation loss decreased (0.015217 --> 0.014667).  Saving model ...\n",
      "Epoch: 26 \tTraining Loss: 0.030305 \tValidation Loss: 0.014710\n",
      "Epoch: 27 \tTraining Loss: 0.028624 \tValidation Loss: 0.014660\n",
      "Validation loss decreased (0.014667 --> 0.014660).  Saving model ...\n",
      "Epoch: 28 \tTraining Loss: 0.027184 \tValidation Loss: 0.014687\n",
      "Epoch: 29 \tTraining Loss: 0.025928 \tValidation Loss: 0.014665\n",
      "Epoch: 30 \tTraining Loss: 0.025115 \tValidation Loss: 0.014440\n",
      "Validation loss decreased (0.014660 --> 0.014440).  Saving model ...\n",
      "Epoch: 31 \tTraining Loss: 0.023628 \tValidation Loss: 0.013988\n",
      "Validation loss decreased (0.014440 --> 0.013988).  Saving model ...\n",
      "Epoch: 32 \tTraining Loss: 0.023227 \tValidation Loss: 0.014189\n",
      "Epoch: 33 \tTraining Loss: 0.021737 \tValidation Loss: 0.013854\n",
      "Validation loss decreased (0.013988 --> 0.013854).  Saving model ...\n",
      "Epoch: 34 \tTraining Loss: 0.020124 \tValidation Loss: 0.014215\n",
      "Epoch: 35 \tTraining Loss: 0.019775 \tValidation Loss: 0.013724\n",
      "Validation loss decreased (0.013854 --> 0.013724).  Saving model ...\n",
      "Epoch: 36 \tTraining Loss: 0.018185 \tValidation Loss: 0.013954\n",
      "Epoch: 37 \tTraining Loss: 0.017740 \tValidation Loss: 0.013884\n",
      "Epoch: 38 \tTraining Loss: 0.016794 \tValidation Loss: 0.014041\n",
      "Epoch: 39 \tTraining Loss: 0.016128 \tValidation Loss: 0.013853\n",
      "Epoch: 40 \tTraining Loss: 0.015983 \tValidation Loss: 0.013679\n",
      "Validation loss decreased (0.013724 --> 0.013679).  Saving model ...\n",
      "Epoch: 41 \tTraining Loss: 0.015297 \tValidation Loss: 0.014018\n",
      "Epoch: 42 \tTraining Loss: 0.014236 \tValidation Loss: 0.013854\n",
      "Epoch: 43 \tTraining Loss: 0.013563 \tValidation Loss: 0.014425\n",
      "Epoch: 44 \tTraining Loss: 0.013636 \tValidation Loss: 0.013782\n",
      "Epoch: 45 \tTraining Loss: 0.012579 \tValidation Loss: 0.013863\n",
      "Epoch: 46 \tTraining Loss: 0.012199 \tValidation Loss: 0.013543\n",
      "Validation loss decreased (0.013679 --> 0.013543).  Saving model ...\n",
      "Epoch: 47 \tTraining Loss: 0.011751 \tValidation Loss: 0.013556\n",
      "Epoch: 48 \tTraining Loss: 0.011472 \tValidation Loss: 0.013725\n",
      "Epoch: 49 \tTraining Loss: 0.010809 \tValidation Loss: 0.014055\n",
      "Epoch: 50 \tTraining Loss: 0.010845 \tValidation Loss: 0.013902\n"
     ]
    }
   ],
   "source": [
    "# number of epochs to train the model\n",
    "n_epochs = 50\n",
    "\n",
    "# initialize tracker for minimum validation loss\n",
    "valid_loss_min = np.Inf # set initial \"min\" to infinity\n",
    "\n",
    "for epoch in range(n_epochs):\n",
    "    # monitor training loss\n",
    "    train_loss = 0.0\n",
    "    valid_loss = 0.0\n",
    "    \n",
    "    ###################\n",
    "    # train the model #\n",
    "    ###################\n",
    "    model.train() # prep model for training\n",
    "    for data, target in train_loader:\n",
    "        # clear the gradients of all optimized variables\n",
    "        optimizer.zero_grad()\n",
    "        # forward pass: compute predicted outputs by passing inputs to the model\n",
    "        output = model(data)\n",
    "        # calculate the loss\n",
    "        loss = criterion(output, target)\n",
    "        # backward pass: compute gradient of the loss with respect to model parameters\n",
    "        loss.backward()\n",
    "        # perform a single optimization step (parameter update)\n",
    "        optimizer.step()\n",
    "        # update running training loss\n",
    "        train_loss += loss.item()\n",
    "        \n",
    "    ######################    \n",
    "    # validate the model #\n",
    "    ######################\n",
    "    model.eval() # prep model for evaluation\n",
    "    for data, target in valid_loader:\n",
    "        # forward pass: compute predicted outputs by passing inputs to the model\n",
    "        output = model(data)\n",
    "        # calculate the loss\n",
    "        loss = criterion(output, target)\n",
    "        # update running validation loss \n",
    "        valid_loss += loss.item()\n",
    "        \n",
    "    # print training/validation statistics \n",
    "    # calculate average loss over an epoch\n",
    "    train_loss = train_loss/len(train_loader)\n",
    "    valid_loss = valid_loss/len(valid_loader)\n",
    "    \n",
    "    print('Epoch: {} \\tTraining Loss: {:.6f} \\tValidation Loss: {:.6f}'.format(\n",
    "        epoch+1, \n",
    "        train_loss,\n",
    "        valid_loss\n",
    "        ))\n",
    "    \n",
    "    # save model if validation loss has decreased\n",
    "    if valid_loss <= valid_loss_min:\n",
    "        print('Validation loss decreased ({:.6f} --> {:.6f}).  Saving model ...'.format(\n",
    "        valid_loss_min,\n",
    "        valid_loss))\n",
    "        torch.save(model.state_dict(), 'model.pt')\n",
    "        valid_loss_min = valid_loss"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###  Load the Model with the Lowest Validation Loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "model.load_state_dict(torch.load('model.pt'))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "## Test the Trained Network\n",
    "\n",
    "Finally, we test our best model on previously unseen **test data** and evaluate it's performance. Testing on unseen data is a good way to check that our model generalizes well. It may also be useful to be granular in this analysis and take a look at how this model performs on each class as well as looking at its overall loss and accuracy."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test Loss: 0.057290\n",
      "\n",
      "Test Accuracy of     0: 99% (972/980)\n",
      "Test Accuracy of     1: 99% (1126/1135)\n",
      "Test Accuracy of     2: 98% (1015/1032)\n",
      "Test Accuracy of     3: 98% (992/1010)\n",
      "Test Accuracy of     4: 98% (969/982)\n",
      "Test Accuracy of     5: 98% (875/892)\n",
      "Test Accuracy of     6: 98% (945/958)\n",
      "Test Accuracy of     7: 97% (1007/1028)\n",
      "Test Accuracy of     8: 97% (945/974)\n",
      "Test Accuracy of     9: 97% (985/1009)\n",
      "\n",
      "Test Accuracy (Overall): 98% (9831/10000)\n"
     ]
    }
   ],
   "source": [
    "# initialize lists to monitor test loss and accuracy\n",
    "test_loss = 0.0\n",
    "class_correct = list(0. for i in range(10))\n",
    "class_total = list(0. for i in range(10))\n",
    "\n",
    "model.eval() # prep model for evaluation\n",
    "\n",
    "for data, target in test_loader:\n",
    "    # forward pass: compute predicted outputs by passing inputs to the model\n",
    "    output = model(data)\n",
    "    # calculate the loss\n",
    "    loss = criterion(output, target)\n",
    "    # update test loss \n",
    "    test_loss += loss.item()*data.size(0)\n",
    "    # convert output probabilities to predicted class\n",
    "    _, pred = torch.max(output, 1)\n",
    "    # compare predictions to true label\n",
    "    correct = np.squeeze(pred.eq(target.data.view_as(pred)))\n",
    "    # calculate test accuracy for each object class\n",
    "    for i in range(batch_size):\n",
    "        label = target.data[i]\n",
    "        class_correct[label] += correct[i].item()\n",
    "        class_total[label] += 1\n",
    "\n",
    "# calculate and print avg test loss\n",
    "test_loss = test_loss/len(test_loader.dataset)\n",
    "print('Test Loss: {:.6f}\\n'.format(test_loss))\n",
    "\n",
    "for i in range(10):\n",
    "    if class_total[i] > 0:\n",
    "        print('Test Accuracy of %5s: %2d%% (%2d/%2d)' % (\n",
    "            str(i), 100 * class_correct[i] / class_total[i],\n",
    "            np.sum(class_correct[i]), np.sum(class_total[i])))\n",
    "    else:\n",
    "        print('Test Accuracy of %5s: N/A (no training examples)' % (classes[i]))\n",
    "\n",
    "print('\\nTest Accuracy (Overall): %2d%% (%2d/%2d)' % (\n",
    "    100. * np.sum(class_correct) / np.sum(class_total),\n",
    "    np.sum(class_correct), np.sum(class_total)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Visualize Sample Test Results\n",
    "\n",
    "This cell displays test images and their labels in this format: `predicted (ground-truth)`. The text will be green for accurately classified examples and red for incorrect predictions."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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FwAAAAAAAABihE1dAAAAAAAAAIgRNnUBAAAAAAAAIEbY1AUAAAAAAACAGGFTFwAAAAAAAABipEpZDwAopCuvvNJpV69e3cR77rmnk+vWrVvk59x3331O+/333zfxY489tjFDBAAAAAAAADLiTl0AAAAAAAAAiBE2dQEAAAAAAAAgRii/gKL39NNPmzhTSQXf2rVrI3PnnXee0z700ENNPH78eCc3Z86crM+JiqNZs2YmnjFjhpPr2bOnie++++6CjQmFsfnmmzvtW2+91cT+2vLpp5867eOPP97Es2fPzsPoAAAAgHipU6eO027UqFFW/fzr6csuu8zEX375pZObOXOmiSdPnlzSIQJ5wZ26AAAAAAAAABAjbOoCAAAAAAAAQIywqQsAAAAAAAAAMUJNXRQdu4aulH0dXb+u6WuvvWbinXbaycl16tTJaTdp0sTEPXr0cHI33nhjVudHxdKiRQsT+/Wb586dW+jhoIAaNmzotM855xwT+3OhVatWTvvoo4828ZAhQ/IwOpSlli1bOu1Ro0aZeIcddsj7+Q877DCnPX36dBN///33eT8/yhf7WmfMmDFO7uKLLzbx0KFDndyff/6Z34EhZw0aNDDxM8884+QmTpxo4mHDhjm57777Lq/j8m2xxRZO++CDDzbx2LFjndzq1asLMiYAZe+oo45y2p07dzZxu3btnFzTpk2z+ky7Tq4kNW7c2MSbbrppZL/KlStn9flAvnGnLgAAAAAAAADECJu6AAAAAAAAABAjlF9AUWjdurWJjz322Mjjpk6d6rTtRzYWLFjg5JYuXWriTTbZxMl98MEHTnuvvfYycb169bIYMSq6vffe28TLli1zcqNHjy70cJBn9evXN/EjjzxShiNBeXb44Yc77UyP/eWDX1rozDPPNHH37t0LOhYUnn/9cu+990Yee88995h4+PDhTm7FihWlOzDkrE6dOk7bvg72Sxz8/PPPJi50uQXJHc+nn37q5OzvUL8s0TfffJPfgSGjWrVqmdgvObf77rub+NBDD3VylM3AenYZQ0m66KKLTGyXKJOk6tWrO+0gCDb6/M2aNdvozwDKEnfqAgAAAAAAAECMsKkLAAAAAAAAADHCpi4AAAAAAAAAxEiZ19Tt1q2b07brpvz4449ObuXKlSZ+4oknnNxPP/1kYmorVTwNGzY0sV9bx64f5tcrnDdvXlaff8UVVzjt5s2bRx778ssvZ/WZqFjsumKSdPHFF5v4scceK/RwkGf/+te/nHaXLl1MvO++++b8uQcffLCJK1Vy/1528uTJJn7nnXdyPgcKq0qV/12KdezYsQxH8tc6lpdffrmJN998cyfn1wJH/NnriyRtt912kceOGDHCxPb1OcrelltuaeKnn37aydWtW9fEfs3kSy65JL8D24C+ffuaeMcdd3Ry5513non5nVe2evTo4bRvuOEGE2+//faR/ezau5L066+/lu7AEFv+d03Pnj3zfs4ZM2aY2H/nDuKnadOmJra/A6W/vm+pXbt2Jl67dq2TGzp0qInfe+89J1eev3u4UxcAAAAAAAAAYoRNXQAAAAAAAACIkTIvv3DLLbc47R122CGrfvZjOJL0+++/m7gsbqGfO3euif1/pk8++aTQw6lwXnzxRRPbt99L7txYuHBhTp/fvXt3p121atWcPgcV1y677OK07UeZ/ccjEX933HGH0/Yf78nVcccdlzaWpNmzZ5v4xBNPdHL+Y/UoP9q3b2/iAw44wMn51xP5VqdOHadtlxrabLPNnBzlF+Jv0003ddp9+vTJuq9dNigMw1IbEzZey5YtTWw/Zurr379/AUYTbbfddnPadqmz0aNHOzmuk8qW/Xj8nXfe6eTq1atn4kxrwd133+207TJkUu6/0VB++I+922UU/EfZx44da+I//vjDyS1evNjE/rWGXwrq9ddfN/GXX37p5D788EMTf/bZZ05uxYoVkedA+WSXMvTXD/s3kT8PS2K//fYz8Zo1a5zcV199ZeIJEyY4OXuur1q1Kufz54o7dQEAAAAAAAAgRtjUBQAAAAAAAIAYYVMXAAAAAAAAAGKkzGvqnnPOOU57zz33NPH06dOd3K677mpiu16U5NaM2n///Z3c999/b+Ltt98+67H5dTTmz59v4oYNG0b2mzNnjtOmpm5h2XUlN0avXr1M3KxZs4zH2jV77BhY76qrrnLa9jxljSgOr7zyiokrVSqdvzP99ddfnfbSpUtN3LhxYye34447mvijjz5ycpUrVy6V8WDj2TXBJGnEiBEmnjVrlpMbNGhQQca03jHHHFPQ86Fs7bHHHk67VatWkcf618SvvvpqXsaEkmvQoIHT7tq1a+SxZ511lont3zWFYtfRfeONNyKP82vq2u/HQOFdeeWVJq5bt25On+HX+j/iiCOc9g033GBiv/5uWdSoRHbsGrd2fVtJ2muvvUx87LHHRn7GBx984LTtfZ7vvvvOyTVq1Mhp2+81Kq33V6Ds2HuBF110kZOz15BatWpFfsYPP/zgtN99912n/d///tfE/u9z+x0k++67r5Oz176OHTs6ucmTJ5t46NChkWPLF+7UBQAAAAAAAIAYYVMXAAAAAAAAAGKkzMsvvPnmmxnbtrFjx0bm6tSpY+K9997bydm3Ue+zzz5Zj23lypVOe+bMmSb2S0PYt2P7j08iHo4++min3b9/fxNvsskmTu6XX35x2tdcc42Jly9fnofRIW522GEHp926dWunba8ny5YtK8SQUMratm3rtHfeeWcT+4+AZftImP/Ijv8o2+LFi03coUMHJ9enT5/Iz73gggtMfN9992U1FuRH3759nbb96KL/OKpdbiNf7OsXf07zKGNxy/SYvs9fi1B+3H777U77lFNOMbH9G0iSnn322YKMKUqbNm1MvNVWWzm5hx9+2MSPP/54oYaENPzyTmeccUbksVOmTDHxzz//7OQOPfTQyH5bbLGF07ZLPDzxxBNO7qeffooeLArK/0385JNPmtgutyC5JaQylVvx+SUXbH6ZS8Tb/fff77TtMh1bbrllZD9/z/CLL74w8bXXXuvk/D0924EHHui07d9Lw4cPd3L2HqO/1g0ZMsTEzz33nJMrRKkj7tQFAAAAAAAAgBhhUxcAAAAAAAAAYoRNXQAAAAAAAACIkTKvqVtaFi1aZOK333478rhMNXs3xK49Ztfwldw6Hk8//XTO50DZ8Wue+jWDbP6/4/Hjx+dlTIgvvzalrxD1dVD67FrJTz31lJPLVPvJNnv2bKdt115KJpNOLlONbv9zzj33XBPXr1/fyd1yyy0mrlatmpO75557TLx69erI8yF33bp1M3HHjh2d3DfffGPiTz75pGBjWs+uxezX0B03bpyJf/vtt0INCQVy8MEHZ8yvWrXKxJlqdqNshWHotO3/jn/88UcnZ/87zZfq1aub2K9teOGFF5rYH/eZZ56Z34Eha/77aWrWrGnid99918nZ17v+9cVJJ51kYn8uNGnSxGlvvfXWJn7hhRec3JFHHmnihQsXZhw7Sl+NGjVMbL9HRnLfSbNgwQInd9ttt5mYd85UXP66cNVVV5n47LPPdnJBEJjY/61svxPk1ltvdXK5vp+mXr16Trty5com7tevn5Oz3+/l1x0va9ypCwAAAAAAAAAxwqYuAAAAAAAAAMRI0ZRfyIcGDRo47XvvvdfElSq5++H9+/c3MY+FxMfzzz9v4sMOOyzyuEcffdRp9+3bN29jQnHYY489Mubtx+ERH1Wq/O9rM9tyC5JboqV79+5Ozn9cLVt++YUbb7zRxIMHD3Zym222mYn9uTdmzBgTz5o1K6exILPjjz/exPa/C8m9tigEu4SIJPXo0cPEf/75p5MbOHCgiSnNURwOPPDAtHE69uOMn3/+ed7GhPw56qijnPbrr79uYr+kiv1oa0n45abatWtn4v333z+y38iRI3M6H/Jv0003ddp2qYw77rgjst/KlSud9kMPPWRi+3tQknbaaafIz/Ef1S9E2RBE69Kli4l79+7t5ObMmWPiNm3aOLnFixfnd2CIBfs7QZJ69eplYrvcgiT98MMPJrZLn0rSRx99lNP57ZIKkrT99tub2N/jeeWVV0zsl1u1+eN+7LHHTFwW5cq4UxcAAAAAAAAAYoRNXQAAAAAAAACIETZ1AQAAAAAAACBGqKmbwUUXXeS069evb+JFixY5ua+++qogY8LGadiwodO268n59aPsOpd2XUFJWrp0aR5Gh7iza8edccYZTu6zzz5z2v/5z38KMiaUjU8++cRpn3nmmSbOtYbuhti1ce06qZK0zz775OWcSG+LLbZw2pnqSuZaxzJX5557rtO2a0NPnz7dyb399tsFGRMKpyRrQaHnJnJz1113Oe327dubeJtttnFyBx98sIn9moCdO3fO6fz+59j1V33ffvutia+99tqczof8O+mkkyJzfp1m+/0kmbRu3Trr83/wwQdOm99dZStT/XX7983cuXMLMRzEjF/T1n9/g23NmjUm3m+//Zxct27dTLzLLrtEfsaKFSuc9q677hrZ9n+TbbXVVpGfa/v555+ddlm/g4I7dQEAAAAAAAAgRtjUBQAAAAAAAIAYofyC5+9//7uJe/fuHXlcly5dnPaXX36ZtzGh9Dz33HNOu169epHHPv744yaeNWtW3saE4nHooYeauG7duk5u7NixTnvlypUFGRPyp1Kl6L8X9R8ZKgT7EVh/bJnG2q9fPxOfeuqppT6uisgv57PtttuaeMSIEYUejqNJkyaROa5lil+mR6B/++03p035hXj49NNPnfaee+5p4r333tvJHXHEESbu1auXk5s/f76JH3nkkazP/9hjjzntyZMnRx47ceJEE3NtXX7531N2aQ6/hIv9GPQee+zh5I499lgT16lTx8n5642dP+ecc5ycPcemTZuWcewoffZj7z57TUkkEk7uhRdeMPHnn39e+gNDLLz11ltO2y7tZf92lqRGjRqZ+P/+7/+cXKbSPnZJB7/cQyaZyi2sXbvWaY8ePdrE//rXv5zcvHnzsj5nPnCnLgAAAAAAAADECJu6AAAAAAAAABAjbOoCAAAAAAAAQIxQU9fTsWNHE1etWtXJvfnmmyZ+//33CzYmbBy7DlTLli0jjxs3bpzT9usCARuy1157mdiv+zNy5MhCDwd5cP7555vYr7VU1jp16mTiFi1aODl7rP647Zq6KB2///6707Zrydn1LiW3/vbChQvzMp4GDRqYOFNtvAkTJuTl/Cg7Bx10kNM++eSTI49dvHix0547d25exoT8WrRokYnt2oV+++qrry6V8+20005O267v7tfRvPLKK0vlnMivN954w2nba4NfN9eucZup5qX/mRdddJHTfumll0z8t7/9zcnZ9Svt6zAURv369U3sX0Pa7xC4/vrrnVzfvn1NPHToUCf3wQcfmNiuoypJ33zzjYmnTp2acWy77babif39Gb7DyocVK1Y4bbvWdu3atZ2c/U4r+11XkvTrr7+aeM6cOU7Onof273FJ2nfffUs44pRhw4Y57WuvvdbEfk3wssadugAAAAAAAAAQI2zqAgAAAAAAAECMsKkLAAAAAAAAADFS4WvqVq9e3WkfccQRJl61apWTs2usrl69Or8DQ87q1avntO36J36dZJtf92vp0qWlOzAUna233tppt2nTxsRfffWVkxs9enRBxoT8suvWlgW7rlnz5s2dnL3WZTJ//nynzfdZ6fPrh82aNcvEXbt2dXIvv/yyiQcPHpzT+XbffXen7de43GGHHUycqeZheasTjY3nXxNVqhR9P8d//vOffA8HRcivo2mvMX7dXv/7B+WTX9/9hBNOMLH/jogtttgi8nPuvvtuE/tzYeXKlU571KhRJrbrakrS4YcfbuImTZo4Ofv7Fflx2223mfjyyy/Pup/9fXPhhRc6Ob9dGvz1xX5fTvfu3Uv9fNh4fm1a/7/9XDz66KNOO1NNXf8dGPb8fvjhh53cn3/+udFjyxfu1AUAAAAAAACAGGFTFwAAAAAAAABipMKXX+jVq5fTbtGihYnHjh3r5CZOnFiQMWHjXHHFFU57n332iTz2+eefN7FdXgPIxj//+U+n3aBBAxO/+uqrBR4NKoI+ffqY+KKLLsq633fffWfi008/3cnNmTNno8eFzOzvlyAInNxRRx1l4hEjRuT0+QsWLHDafomFLbfcMqvP8R81Q/x169YtMuc/9nj//ffnezgoAscff7zTPu2005y2/Tjrr7/+WpAxIb/eeOMNE/trysknn2xif02xS3P45RZ8AwYMMPGuu+7q5Dp37pz2M6W/XtOg9NmPxD/99NNO7sknnzRxlSru1tL2229v4kylf0qLXaJMcudq3759ndzAgQPzPh4UzlVXXWXikpTaOP/88512rtfhZY07dQEAAAAAAAAgRtjUBQAAAAAAAIAYYVMXAAAAAAAAAGKkwtXUtWvXSdJ1113ntJcsWWLi/v37F2RMKF2XX3551sdefPHFJl66dGk+hoMi1rhx48jcokWLCjgSFKtXXnnFae+88845fc60adNMPGHChI0aE0puxowZJj7hhBOc3N57723ipk2b5vT5I0eOzJh/5JFHTNyjR4/I41asWJHT+VG+bLfddia261365s6d67Q/+eSTvI0JxePII4/MmH/ppZdMPGnSpHwPBwVm19dN186V/f3j1221a+q2b9/eydWtW9fECxcuLJWxwPXnn3+a2P+eaNasWWS/Qw45xMRVq1Z1cv369TNxpvffbAz7HQatWrXKyzlQNs4++2ynbddM9ms7+6ZOnWriUaNGle7Aygh36gIAAAAAAABAjLCpCwAAAAAAAAAxUiHKL9SrV8/E//d//+fkKleu7LTtR10/+OCD/A4MZc5+ZGf16tU5f87ixYsjP8d+3GSLLbaI/IzatWs77WzLSNiPxEjS1VdfbeLly5dn9RnIzdFHHx2Ze/HFFws4EhSK/ShXpUrRfy+a6fHUYcOGOe1tttkm8lj/HGvXrt3QENPq1KlTTv2Qf59//nnauDR9++23WR23++67O+0vv/wyH8NBnh144IEmzrROPf/884UYDoqM//22bNkyp3377bcXcjgoQs8884zTtssvnHjiiU7OLqVH6cTy5c0334zM2aWn/PILa9asMfFDDz3k5B544AGnfemll5o4U7khxN++++5rYv97pkaNGpH9/BKb559/von/+OOPUhpd2eJOXQAAAAAAAACIETZ1AQAAAAAAACBG2NQFAAAAAAAAgBgpypq6fp3csWPHmnjHHXd0crNmzXLa1113Xf4GhnJnypQppfI5zz77rInnzZvn5LbaaisT+3Wg8uGnn34y8Q033JD381U0Bx10kIm33nrrMhwJysJ9991n4ltuuSXyuJdeeslpZ6qFW5I6udkeO3To0Kw/E8XPrgVtxz5q6BYH+10SvgULFpj4rrvuKsRwUATsGoT2da0k/fLLL0570qRJBRkTipd/rWNfbx1zzDFOLpFImPipp55ycjNnzswOL8BwAAAgAElEQVTD6FAaXn/9dRP7v1erVPnfFtU555zj5Jo2beq027Vrl9X55s6dW8IRoryx3w9Ss2bNyOP8Ou92TW5Jeu+990p3YOUAd+oCAAAAAAAAQIywqQsAAAAAAAAAMVKU5ReaNGnitFu1ahV57OWXX+60/XIMiJ9XXnnFafuP6eTD8ccfn1O/NWvWmDjTY9Vjxoxx2p988knkse+++25OY0F2jj32WBP7pV4+++wzE7/zzjsFGxMKZ9SoUSbu1auXk6tfv37ezz9//nwTT58+3cmde+65JvbLwKBiC8MwbYzidPjhh0fm5syZY+LFixcXYjgoAnb5BX8NefnllyP7+Y/I1qlTx8T2XAQy+fzzz018/fXXO7lbb73VxIMGDXJyp556qolXrFiRp9EhF/Y17DPPPOPkTjjhhMh+7du3j8z9+eefTttem3r37l3SIaKM+d8fV111VVb9nnjiCac9bty40hpSucWdugAAAAAAAAAQI2zqAgAAAAAAAECMsKkLAAAAAAAAADFSNDV1GzdubOLXX3898ji/BuJLL72UtzGhbBx33HFO266/UrVq1aw/Z7fddjPxiSeemHW/4cOHO+3vvvsu8tjnnnvOxDNmzMj6HCiczTbbzGl37Ngx8tiRI0ea2K/rhOIwe/ZsE3fv3t3JdenSxcQ9e/bMy/lvuOEGEw8ZMiQv50DxqVatWmSOOoPx51/b+O+WsK1cudLEq1evztuYUHH41zs9evQw8WWXXebkpk6dauLTTz89vwNDUXr00Ued9nnnnWdi/zdg//79TTxlypT8DgwlYl97XHrppU6uRo0aJm7durWTa9CggdO2f2c/9thjTq5fv34bOUoUmv3vftq0aU4u0z6O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aeRn+jU2rr/+ehP37dvXydWqVcvEiUTCyZ199tkmXrRoUeT5kB81a9Y08erVq52cXVMXKKm9997baQ8YMMDEHTt2dHL+emLXSh05cqST69Onj4nnzZvn5Nq3b2/iN99808mtWLEim2GjAM477zynPXDgwJw+Z/z48U774IMPzqqf/z1ITd2KrV+/fmU9BGykUaNGOe0uXbqY2K6TK0n77LNPQcaE+LHfM+HPqX333dfE/ntF7N9ZX331lZNr1KiR07a/72bPnu3kRowYUcIRY2MceeSRTvv55583sV/7PxP7+nLMmDGRx/n/vu2a3vvtt5+TW7BggdOeMGFC1uNBYX333XeRObu++5AhQ5zc1KlTTezPt/79+5vYf//NCy+8YGL7nUqSdMsttzhtv6Y8UBItWrRw2v47SeKCO3UBAAAAAAAAIEbY1AUAAAAAAACAGCnX5Rfsx+YlqV69eia2b/WX3Fvzx40bVyrntx+PltzHFzfZZBMnd+WVV5r42GOPdXLDhw838csvv1wqY0O0bbbZxmmfddZZJp44caKTmzRpUkHGhPjyHxdq27atiR966CEn17BhQxP7a5S/ntj5rl27Ojn7Mbftt9/eybVr187Ep59+upN7/PHH/zJ+FI5dMui6667L6TN69+7ttO1HFyX3cbVevXrldA4A8XPBBRc47VatWpm4cePGTs5+HH7OnDn5HRjKNf9RUvt3iF9Cyp4rfgmhDz/80MSLFy92cv51iv3o9PHHH+/knn766cjcZ599ZuKvv/7ayfnXVMiOvzaUpOSCrXr16iY+8cQTs+532WWXRZ7bvy6255hflmzatGkm9ksB+OVAUPrscj++Z5991sQ9e/bM+jMnT55s4tGjRzu5unXrmti/nm7SpInTtsuL+WUWET/NmjUz8W233ebkLrnkEhP7pV7y4Ysvvsj7OUoLd+oCAAAAAAAAQIywqQsAAAAAAAAAMcKmLgAAAAAAAADESLmuqbvppptG5h555BGnPWTIkHwPx3Httdc6bbu+0I477ujkjjvuOBNTUzf/+vbtW9ZDcOy///4m9uuO2ezaQpI0c+bMvI0J2WvZsqXTHjt2bOSx8+bNM/HFF1/s5JYvXx7Zz695tmzZMhPffffdTm7VqlVpz4fCs2voStKNN95oYr+OoV0P0K8D1blzZxNPnz7dyfk1566//noT+zXIxowZE3n+KVOmmHjPPfcU4i+ZTJo4kUhkPNZ+J4AdIz7mz5/vtIcNG2bigQMHOjn7v39q6lZsfu11u47ujz/+6OR23nlnE9vXGhvy/fffO227Vu4ff/zh5Dp27GjiJ598MvIza9So4bTtdw0gew8++KDTtmuONm3a1MllWiuqVatm4mOOOSbr8++6664mrl+/vpOrVMm9t+yAAw5IG/tWrlzptG+99VYTb+i7ELmx/7v1r0v9759sTZgwwcT+nLKvpw866CAnd/LJJ0d+5hlnnOG016xZk9PYUHbsfZOjjz7aydn7f6VVU9dfB20//PBDqZyjELhTFwAAAAAAAABihE1dAAAAAAAAAIiRcl1+YcCAAZG5Dz/8sIAj2bDXXnvNxOeff76Ts28jR/4dddRRkTn/MaTSct9990Wev06dOiauXr165GcsWbLEad9xxx0mzvTfAkqf/Vi9/Ui7780333Ta11xzjYknTZqU9fm22WYbp/3CCy+YuHbt2k7OfszMPz8Kyy/NYf+37z9WaD/Keu+99zq5qVOnZn1O+9HJjz76yMk9/PDDJr7iiiuc3B577GFi+7FtSTr33HOzPj/KDx4zrdjsNSYIAidnP/Ls5zLxy79kKhuE8qt79+4mvvzyy53cwoULTWzPE6lkJRcymTVrlombN2/u5B599NHIfva1j/+IPXJjXzNIpfM7yP59siG77767if/xj39kPNZ+rL5Vq1aRx9mlICSpZ8+eJh48eLCTW7x4cVbjRGZvvPGGiTt06ODk7JJxuZo4caLTvuqqq0zsl660f1dL7rx58cUXndwzzzyz0WNDYfnzy5aPcgj+b6DffvvNxCX5LV/WuFMXAAAAAAAAAGKETV0AAAAAAAAAiBE2dQEAAAAAAAAgRspdTd2ddtrJxH6dSbsuzhdffFGwMWXjrbfeMrFfUxf5t9lmm5m4ShV3Wtv1V+yakxtif45fO3P06NFOe+uttzaxX0tz/vz5JrZrEvmf26hRIydn13jxa5DNnj0749ixca677joTb7nllk7Oru3k16r75ptvcjqfXXNMklq0aBF57NixY3M6B0rfkUce6bTDMDTx2rVrndy4ceNMfPvtt+dlPL17944cmz3HWrdunZfzA8if+vXrO+2zzz7bxPbaI0mPPPKIif2auvaxfs6/tnniiScicyi/9txzTxP716R2DfelS5fmfSxz587N+tjff//dxP6cRjx9+eWXaeN07PeTbLvttk7Ovr4566yznFytWrVM7L9P4Prrr89+sIhk11vPVPPUZ39P2bVvJen+++/P6jNGjBjhtC+88MLIY//2t79lPTaUDzVr1nTahxxyiIn9msj+u0RKQ9WqVZ22/fttzZo1pX6+fOFOXQAAAAAAAACIETZ1AQAAAAAAACBGyl35hVNOOcXEdikGSXruuedMPHHixIKNCeWf/XjHVltt5eSGDRuW1Wf45T7s8gd9+/bN2PfHH3808WOPPebk7r33XhNnegxtzJgxTrtjx44mbtiwoZOj/ELpeuCBB5z28ccfb+Jly5Y5OfsRsFzLLUju4x7XXHONk7MfiR0/fryT89sorHr16pl43333zbqfvy7km3++m2++uaDnB7Dx7JIL/tpvl2yaNGmSk7MflZ0wYULk559zzjlOu1WrVk77uOOOM7H/OLy9/tnnk6Tly5dHnhP516RJk8hcob8LDj/8cKddvXr1yGP9R21RsaxcudLEs2bNcnL2vPXLL9hlO0pSZg/Z++STTyJzdrmXatWqObl77rnHxP5j7m3bti2l0f2PvR8gSV999ZWJ//Of/zg5u6wnyk7z5s2dtl165cMPP3Ryfmm7XNWuXdvEu+66q5Pz50lccKcuAAAAAAAAAMQIm7oAAAAAAAAAECNs6gIAAAAAAABAjJS7mrrdu3c3sV/r5K677ir0cBATLVq0iMx9/fXXWX2GXzf3vPPOM7FfS+6tt95y2pdddpmJp06dmtX5fNmOE6WvdevWTtv+97106VInN23atJzO4deSGjBggInbtGkTef7+/fvndD7kh11zcocddog87t1333XaL7/8cr6GVGJ16tRx2nbN7nnz5hV6OAAi7LzzzmljSRo1apSJ7TrwJeG/c2DLLbd02vZ7Lrp06eLkPvroIxP734v2eGbMmJHT2JC9zTbbzGkfe+yxkcfa74DIl0022cTEgwYNisz511dffvllfgeG2DrmmGMiczVr1jRxt27dnNwtt9yStzFVJM8//7yJ/bqm9m9i/702dp1k/3dQPti15iXp6aefNrFf691+d84LL7zg5KgLXzgHHXRQZC5f75E58cQTTWy/K0WS3nnnnbycM9+4UxcAAAAAAAAAYoRNXQAAAAAAAACIkXJXfsHmP7I1YcKEMhoJyrtt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ndwPP/yQ9jhJWrNmTR5GV7H9+OOPTvvrr782cePGjZ1chw4dTHz//fc7ueXLl5t43rx5Tm6fffYxsV1CQZKmT5/utO3yG7fffruTO+uss9KeT3JLLvglHhBvO+ywQ8b80qVLTXznnXfmeTQoLfbjgv5jV1tuuaWJhw8f7uTOPPPM/A7MY49Fckt6DB06tKBjAVBx+SUWunTpYuJp06YVejgV3urVq01cWo84b7vttlkf++GHH5bKORE/3bt3d9qXXXZZ5LHLli1z2va6sXbt2tIdGErNiBEjnLa9Ntx8881OLggCE/t7LoW21157OW17bL64Pp5fkdWpUycyl2tZxfKGO3UBAAAAAAAAIEbY1AUAAAAAAACAGGFTFwAAAAAAAABipMxr6r799ttO265NW6tWLSdn1whcsGBBqZx/zz33dNoXXnihiVu2bOnkWrduHfk5p5xyiompF1V4dt3al19+2cl17NjRxK+99pqTGzx4sIn9mrq2/fbbz2lfc801kXm/Ds9XX31l4j59+ji50aNHR54T8XbddddlzL/44osmnjRpUr6Hg1Ly+eefm7hXr15O7uGHHzbx8ccf7+TuueceE+fr3/cDDzxg4q222srJPfvssyZeuXJlXs6P/GrXrl3GNoqbX3/SrpP9+OOPF3o4GdnvNrjhhhuc3GabbWZif51EPHXr1q2sh4Byqm3btib232uSqW7pP//5T6f95Zdfluq4UBjDhg0z8RFHHOHk2rdvb+JHH33UyY0fP97EN910k5ObOXNmTmPp2bOn0z777LNN3KRJEyeXaW6iuPzxxx9lPYRSwZ26AAAAAAAAABAjbOoCAAAAAAAAQIyUefmFTHbddVenPXbsWBNnelS+JPbff3+nXa9evchj7ZIPY8aMcXIff/xxqYwHuZk7d66J/cc77BIfBxxwgJOzH0n22Y9ehGGY9Vgeeughp3311Veb+Ndff836cxA/u+22m4m7du2a8Vi/FAji57333nPaTz75pIlPPvlkJ2c/glha5RfsR9ck6dhjjzXxL7/84uT69+9fKudE2UkkEmU9BBSY/d/0bbfd5uTsx1rzVX6hfv36acfi83N2+TJ/LTrttNNMPGPGjI0dIspAo0aNnPZJJ50Ueew777zjtJcsWZKXMaF8qF27ttN+6aWXTLz55ptn7DtkyBAT+7+zEU/2f+9dunRxcpMnTzZxw4YNndzpp59u4lNPPdXJrV27NqexVKmS27aXv8fD9TTKI+7UBQAAAAAAAIAYYVMXAAAAAAAAAGKETV0AAAAAAAAAiJFyV1O3T58+Ju7bt6+Ts2t05Ytdp2XhwoVObvDgwSa+6aab8j4W5Mavt2zXTT7xxBOdXNOmTU18zjnnOLl///vfJt5QTd0HH3zQxNSIq7jsNapmzZpOzp9DK1euLMiYkD/ffvut077uuutM/Pe//93J2fVQ7TqVknTttddGnqNZs2ZOe5999jHxHXfc4eTsWna33367k5s2bVrkOVB+tWvXLm28IX695XHjxpXOgFBmKlVy78M499xzTezXcB81apSJ7fcDSNIuu+xiYvtdEdJfax5mereAnZs+fbqTe+KJJ0w8aNAgJ+efE/HTpEkTp73FFltEHvvCCy847TVr1uRlTCg79tpk10KVMtfR/fTTT5325ZdfbuLVq1eX0uhQXixdutRp2+uIP2+6d+9u4t13393JbbPNNqU+tokTJzpt+70nDzzwgJPj/Tjxc+CBBzpt+/rFviaSpAkTJhRkTKWNO3UBAAAAAAAAIEbY1AUAAAAAAACAGCl35RdGjx5t4g8//NDJjR071sT+rfi58m+p/+yzz0w8dOjQUjnH/7d3/67Y9WEAwM/99IwikWR5B4PJ9k7KwsJgEAv+A6uURWFTTCY22cRmsBlseG0UBp6kDG9hUUrdz3be8z09vLfT/cOXz2e6vl0nrnJ1/7g6rkNjPT4+pvH6+vqb183OztajHL6w9vb2NM7/q+rZ2Vlw3tnZqUtN1M/NzU0a59cvZN9Ppqeng9zw8PAfr0uSJFlaWgrObW1tb/7+vb29NN7Y2Pj/gona4uJiGi8sLDSuEGom+5l4aGgoyOVXJWSNjo6mcX7dS3YVS/59Kv+6kV2VkK0lL7926vn5+c1riV9HR8e7+ezff21trdbl0GDZNXf5tVDvWV5eDs5WLnxfm5ubb547OzuDXFNTU3DOriI6ODgIctmVZZeXl0Hu5OQkjW9vb4Pcy8tLJWUTifdWIj48PNS7nJpwpy4AAAAAQEQMdQEAAAAAImKoCwAAAAAQkVJ+n9a7F5dKlV9Mrf1TLpf/bnQRldA3n0e5XC41uoZKxNoz2Z3cvb29QW5ubi44r6ys1KWmKvBaUwUtLS1p3NPTE+Tm5+fTOLtfN0mSZHV19c2fubu7G5xPT0/T+PX1tVCdVaRvKELfUIS+qaPt7e3gPDY2Fpyzz0Tp6+urS00F6ZsCmpubg/P19XUat7a2BrlS6b+vHYeHh0FuYGAgOH+Czy2V0jd8mO/gjTMzMxOc+/v703hycjLIfbJnAlT8WuNOXQAAAACAiBjqAgAAAABE5GejCwD4Ks7Pz9M4v36B7+3p6SmNj46OgtzIyEi9ywGAQsbHx4NzfpVfdhUVX8/g4GBwzq9cyMquXJiYmAhyEa1bACKWX2X33mq7WLlTFwAAAAAgIoa6AAAAAAARMdQFAAAAAIiInboAVbK/v5/G3d3dQe74+Lje5QAAVNWPH+4J+s6yz49IkiS5v79P46urqyA3NTWVxnd3d7UtDOCb8q4MAAAAABARQ10AAAAAgIhYvwBQJVtbW3+MAQAgdhcXF8G5q6urQZUAkCTu1AUAAAAAiIqhLgAAAABARAx1AQAAAAAi8tGduv8mSfKrFoXwYX81uoAP0Defg56hCH1DEfqGIvQNRegbitA3FKFv+Cg9QxEV902pXC7XshAAAAAAAKrI+gUAAAAAgIgY6gIAAAAARMRQFwAAAAAgIoa6AAAAAAARMdQFAAAAAIiIoS4AAAAAQEQMdQEAAAAAImKoCwAAAAAQEUNdAAAAAICI/AY6CugxOInunwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f4e69189438>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# obtain one batch of test images\n",
    "dataiter = iter(test_loader)\n",
    "images, labels = dataiter.next()\n",
    "\n",
    "# get sample outputs\n",
    "output = model(images)\n",
    "# convert output probabilities to predicted class\n",
    "_, preds = torch.max(output, 1)\n",
    "# prep images for display\n",
    "images = images.numpy()\n",
    "\n",
    "# plot the images in the batch, along with predicted and true labels\n",
    "fig = plt.figure(figsize=(25, 4))\n",
    "for idx in np.arange(20):\n",
    "    ax = fig.add_subplot(2, 20/2, idx+1, xticks=[], yticks=[])\n",
    "    ax.imshow(np.squeeze(images[idx]), cmap='gray')\n",
    "    ax.set_title(\"{} ({})\".format(str(preds[idx].item()), str(labels[idx].item())),\n",
    "                 color=(\"green\" if preds[idx]==labels[idx] else \"red\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
